package com.lee.mq.mqserver.core;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: lishuo
 * Date: 2023-10-19
 * Time: 22:51
 */

import java.io.Serializable;

/**
 * 表示消息属性的类
 */
public class BasicProperties implements Serializable {
    // messageId 表示消息的唯一标识（使用UUID表示）
    private String messageId;
    // 如果当前的交换机类型是 DIRECT，此时 routingKey 表示要转发的队列名.
    // 如果当前的交换机类型是 FANOUT，此时 routingKey 无意义.
    // 如果当前的交换机类型是 TOPIC ，此时 routingKey 和 bindingKey 匹配，符合要求进行转发.
    private String routingKey;
    // deliverMode 表示消息是否持久化。（2 表示持久化 ；1 表示不持久化。参考 RabbitMQ）
    private int deliverMode = 1;

    // 额外说明：RabbitMQ 中还有很多别的属性，这里暂不考虑.


    public String getMessageId() {
        return messageId;
    }

    public void setMessageId(String messageId) {
        this.messageId = messageId;
    }

    public String getRoutingKey() {
        return routingKey;
    }

    public void setRoutingKey(String routingKey) {
        this.routingKey = routingKey;
    }

    public int getDeliverMode() {
        return deliverMode;
    }

    public void setDeliverMode(int deliverMode) {
        this.deliverMode = deliverMode;
    }

    @Override
    public String toString() {
        return "BasicProperties{" +
                "messageId='" + messageId + '\'' +
                ", routingKey='" + routingKey + '\'' +
                ", deliverMode=" + deliverMode +
                '}';
    }
}
